//페이지 구성완료후 이벤트
$("#food").die();
$("#food").live("pageinit", function() {
	// 페이지 정보
	var page = {
		"dom" : $(this),
		"id" : this.id
	}

	// 모델
	var model = (function() {
		var my = {};

		// 로컬 스로티지에 Food 세팅하기
		my.setMyFoodList = function(param) {
			Storage.setLocalData("myFoodList", param);
		}

		// 로컬 스토리지에서 Food List 가져오기
		my.getMyFoodList = function(param) {
			return Storage.getLocalData("myFoodList");
		}

		my.setAddFoodToDiary = function(data, cb) {
			var callback = cb || $.noop();
			var sql = "insert into diary_base ( 'insert_date', 'title', 'kcal','timestamp', 'type', 'kind') values('" + UTIL.today() + "','" + data.title + "','" + data.kcal + "','" + $.now() + "','food','" + data.timestamp + "')";
			Storage.execDataBase(sql, callback)
		}

		return my;
	})();

	// 뷰
	var view = (function() {
		var my = {};

		// 홈버튼 가져오기
		my.getHomeMoveButton = function() {
			return $("#home_move_button", page.dom);
		}

		// 음식 이동 버튼 가져오기
		my.getFoodMoveButton = function() {
			return $("#food_move_button", page.dom);
		}

		// 운동 이동 버튼 가져오기
		my.getTrainingMoveButton = function() {
			return $("#training_move_button", page.dom);
		}

		// 다이어리 이동 버튼 가져오기
		my.getDiaryMoveButton = function() {
			return $("#diary_move_button", page.dom);
		}

		// 코치 이동 버튼 가져오기
		my.getCoachMoveButton = function() {
			return $("#coach_move_button", page.dom);
		}

		// 푸드 리스트
		my.getFoodList = function() {
			return $(".food_list", page.dom);
		}

		// 푸드 리스트
		my.getFoodList2 = function() {
			return $(".food_list2", page.dom);
		}

		// 푸드 리스트 콘텐츠
		my.getFoodListContent = function() {
			return $(".food_list_content", page.dom);
		}

		// 푸드 리스트 콘텐츠
		my.getFoodListContent2 = function() {
			return $(".food_list_content2", page.dom);
		}

		// 푸드 리스트 템플릿
		my.getFoodListTemplate = function() {
			return $(".food_list_template", page.dom);
		}

		// 푸드 리스트 템플릿
		my.getFoodListTemplate2 = function() {
			return $(".food_list_template2", page.dom);
		}

		// 푸드 리스트 추가 버튼
		my.getAddFoodButton = function() {
			return $(".add_food_button", page.dom);
		}

		// 푸드 찾기 버튼
		my.getFindFoodButton = function() {
			return $(".find_food_button", page.dom);
		}

		// 푸드 찾기 텍스트
		my.getFindFoodText = function() {
			return $(".find_food_text", page.dom);
		}

		return my;
	})();

	// 컨트롤러
	var controll = (function() {

		// 리스트 정렬
		var sortFoodList = function(a, b) {
			try {
				if (a.title > b.title) {
					return 1;
				} else if (a.title < b.title) {
					return -1;
				}
				return 0;
			} catch (e) {
				return 0;
			}
		}

		// 리스트 채우기
		var fillFoodList = function(data) {
			view.getFoodListContent().html("");
			var foodList = ($.isArray(data)) ? data : model.getMyFoodList();
			try {
				foodList.sort(sortFoodList);
			} catch (e) {
			}
			view.getFoodListContent().onList("setList", foodList);
		}

		// 리스트 세팅
		view.getFoodListContent().onList("makeList", {
			'content' : view.getFoodListContent(),
			'template' : view.getFoodListTemplate(),
			'target' : function($item) {
				return {
					"TITLE" : $(".title", $item),
					"SUB_TITLE" : $(".sub_title", $item)
				};
			},
			'data' : function($item, data) {
				$item.TITLE.text(data.title);
				$item.TITLE.attr("timestamp", data.timestamp);
				$item.SUB_TITLE.text(data.kcal + " Kcal");
			},
			'onAddsFinish' : function() {
			}
		});

		// 음식 추가 팝업창
		var addFoodList = function() {
			var addFood = PLUGIN.popupAddFood();
			var answer = JSON.parse(addFood);

			if ($.isEmptyObject(answer)) {
				return false;
			} else if (!answer.title) {
				alert("음식 이름이 없습니다.\n음식이름을 넣어주세요.");
				return false;
			} else if (!answer.kcal) {
				alert("칼로리가 없습니다.\칼로리를 넣어주세요.");
				return false;
			}

			var foodList = model.getMyFoodList();
			if (!foodList) {
				foodList = [];
			}
			foodList.push({
				"title" : answer.title,
				"kcal" : answer.kcal,
				"timestamp" : String(new Date().getTime())
			});
			model.setMyFoodList(foodList);
			fillFoodList(foodList);
		}

		var my = {};
		// controll 초기화
		my.init = function() {

			// 초기 데이터 세팅
			fillFoodList();

			// 홈으로 이동
			view.getHomeMoveButton().bind("tap", function() {
				$.mobile.moveTab("index.html");
			});

			// 운동으로 이동
			view.getTrainingMoveButton().bind("tap", function() {
				$.mobile.moveTab(pageUrl.training);
			});

			// 다이어리로 이동
			view.getDiaryMoveButton().bind("tap", function() {
				$.mobile.moveTab("diary.html");
			});

			// 코치로 이동
			view.getCoachMoveButton().bind("tap", function() {
				$.mobile.moveTab(pageUrl.coach);
			});

			// 리스트 클릭시 다이어리 저장 컨펌 띄우기
			view.getFoodList().die();
			view.getFoodList().live("click", function() {
				var $title = $(this).find(".title");
				if (confirm($(this).find(".title").text() + "(을)를 다리어리에 저장 하시겠습니까?")) {
					var timestamp = $title.attr("timestamp");
					var foodList = model.getMyFoodList();
					var temp = UTIL.find(foodList, "timestamp", timestamp);

					model.setAddFoodToDiary(temp[0]);
				}
			});

			// 리스트 좌우로 푸쉬 시 삭제 컨펌 띄우기
			view.getFoodList().live("swipe", function() {
				var $title = $(this).find(".title");
				if (confirm($title.text() + "(을)를 삭제 하시겠습니까?")) {
					var timestamp = $title.attr("timestamp");
					var foodList = model.getMyFoodList();
					var temp = UTIL.deleteObject(foodList, "timestamp", timestamp);
					model.setMyFoodList(temp);
					fillFoodList(temp);
				}
			});

			// 음식 추가 버튼
			view.getAddFoodButton().bind("click", function() {
				addFoodList();
			});

			// 특정 음식 찾기
			view.getFindFoodButton().bind("click", function() {
				var foodList = model.getMyFoodList();
				var findFoodList = [];
				findFoodList = UTIL.find(foodList, "title", view.getFindFoodText().val());

				if (!$.isArray(findFoodList)) {
					alert("찾으려는 음식이 없습니다.");
					return false;
				}
				fillFoodList(findFoodList);
			});

			// 엔터키로 찾기
			view.getFindFoodText().bind("keydown", function(e) {
				if (e.keyCode === 13) {
					view.getFindFoodButton().trigger("click");
				}
			});
		}

		return my;
	})();

	// controll 초기화 실행
	controll.init();
});
